#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
import logging

from src import constant
from src.office.docx import extract_table_as_one_dimensional_list

from src.diy_basic.string import string_endwith
from openpyxl import load_workbook, Workbook

def word_cov_excel(config_map:map):
    # TODO如果没有配置文件，生成配置文件 弹窗提示，缺少配置文件，已重新生成配置模板，填写完成后再执行程序

    # TODO 判断配置文件中是否包含所要参数，不包含设默认值
    folder_path:str = config_map.get(constant.FOLDER_PATH)
    table_no:int = int(config_map.get(constant.TABLE_NO))
    save_file:str = config_map.get(constant.SAVE_FILE)

    # 文件读取
    files = os.listdir(folder_path)
    if len(files) == 0:
        logging.warning(f"文件夹「{folder_path}」下没有文档文件")
        return
    logging.info(f"读取文件夹「{folder_path}」下的文件共{len(files)}份")

    # 提取表格数据
    table_data = []
    for file_name in files:
        if not string_endwith(file_name, constant.FORMAT_DOCX):
            # TODO doc转docx pdf转docx？
            logging.warning(f"文件「{file_name}」不是以「{constant.FORMAT_DOCX}」格式结尾的文件")
            continue
        table_data.append(extract_table_as_one_dimensional_list(folder_path, file_name, table_no))

    # 写入汇总表格
    wb = load_workbook(folder_path + '/' + save_file) if save_file in files else Workbook()
    ws = wb.active
    for row in table_data:
        ws.append(row)
    wb.save(folder_path + '/' + save_file + constant.FORMAT_XLSX)
